package com.example.service.impl;


import com.example.dao.CheckItemDao;
import com.example.domain.pojo.CheckItem;
import com.example.domain.result.PageResult;
import com.example.service.CheckItemService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
@Transactional
public class CheckItemServiceImpl implements CheckItemService{


    @Autowired
    private CheckItemDao checkItemDao;

    //添加检查项
    public void add(CheckItem checkItem){
        checkItemDao.add(checkItem);
    }

    //按照条件分页查询数据
    @Override
    public PageResult findPage(String param, Integer currentPage, Integer pageSize) {
        //使用插件
        PageHelper.startPage(currentPage,pageSize);
        //查询
        List<CheckItem> pageList = checkItemDao.findCheckItemBycondition(param);
        //封装数据
        PageInfo<CheckItem> info=new PageInfo<>(pageList);
        //返回查询的结果集
        return new PageResult(info.getTotal(),info.getList());
    }

    //根据检查项id删除检查项
    @Override
    public void deleteCheckItem(Integer id) {
        //可能存在外键关联
        //1:根据中间表判断是否存在外键关联
        Long aLong = checkItemDao.forginRealation(id);//返回影响行数
        if(aLong>0){
            //不能删除,抛运行时异常
            //这个信息可以抛给web层么,然后提示错误
           throw new RuntimeException("无法删除");
        }
        //2:如果不存在外键关联,删除
        checkItemDao.deleteCheckItem(id);
    }

    //根据id查询检查项数据回显在表格中
    @Override
    public CheckItem findCheckItemById(int id)throws Exception {
        //有可能查不到,直接将异常抛出
        CheckItem checkItemById = checkItemDao.findCheckItemById(id);
        return checkItemById;
    }



    //根据编辑检查项获取数据,提交到数据库,修改数据库中信息
    @Override
    public void editCheckItem(CheckItem checkItem){
        //修改不成功的情况
        checkItemDao.editCheckItemById(checkItem);
    }

    //查询所有的检查项信息,动态显示在前段页面
    @Override
    public List<CheckItem> findAllCheckItem() {
        List<CheckItem> allCheckItem = checkItemDao.findAllCheckItem();
        return allCheckItem;
    }


}
